import {
	BASEURL,
	TIMEOUT
} from '../../constant/index.js'
import {
	removeParam,
	parseQuery
} from '@/utils/index.js'

const registerHttp = (vm) => {
	uni.$u.http.setConfig((config) => {
		console.log("======")
		console.log(config)
		/* config 为默认全局配置*/
		config.baseURL = BASEURL
		config.timeout = TIMEOUT
		// config.custom = {
		// 	loading: true,
		// 	loadingTitle: '加载中',
		// 	mask: true
		// }
		return config
	})

	// 请求拦截器
	uni.$u.http.interceptors.request.use((config) => {
		console.log(config)
		// 设置token
		if (vm.$store.state.login.token) {
			config.header.Apitoken = vm.$store.state.login.token
		}
		if (config.custom.noToken) {
			delete config.header.Apitoken
		}
		if (config.custom.noBaseUrl) {
			config.baseURL = ''
		}

		if (config.custom.loading) uni.showLoading({
			title: config.custom.loadingTitle,
			mask: config.custom.mask
		})

		// 设备Type 当前应用版本
		if (!config.data) config['data'] = {}
		config.data['osName'] = vm.$store.state.login.osName
		config.data['version'] = vm.$store.state.login.appVersion

		return config
	}, (err) => {
		return err
	})

	//响应拦截器
	uni.$u.http.interceptors.response.use(({
		data,
		config
	}) => {
		uni.hideLoading()
		// 会员过期
		if (data.code === 406) {
			vm.$showToast('会员已过期')
			setTimeout(() => {
				uni.reLaunch({
					url: "/pages/login/login",
					success: () => {
						
					},
				});
			}, 1500)
			return
		}
		// 用户token过期
		if (data.code === 401) {
			if (data.msg == '账号已被禁用') {
				vm.$showToast('账号已被禁用')
				setTimeout(() => {
					uni.reLaunch({
						url: "/pages/login/login",
						success: () => {
							
						},
					});
				}, 1500)
				return
			}
			// vm.$showToast('登录已过期,请重新登录')
			// setTimeout(() => {
			// 	uni.reLaunch({
			// 		url: "/pages/login/login",
			// 		success: () => {
						
			// 		},
			// 	})
			// }, 1500)
			return
		}
		if (data.code !== 200 && data.code !== 401 && data.code !== 406) {
			vm.$showToast(data.msg)
			return Promise.reject(data)
		}
		return data
	}, (err) => {
		// #ifdef H5
		vm.$showToast('网络异常，请稍后操作')
		// #endif
		// #ifdef APP-PLUS
		uni.getNetworkType({
			success: function(res) {
				if (res.networkType != 'none') {
					vm.$showToast('请允许其访问网络')
				}
			}
		});
		// #endif
		uni.hideLoading()
		return Promise.reject(err)
	})
}

export default registerHttp